home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d970.lha / ADM / ARexx / ADR-Laden.bt2 < prev    next >
Text File  |  1993-08-30  |  7KB  |  305 lines

  1. /****************************************/
  2. /*                                      */
  3. /*  BT-II_ADM  V_2        28.08.1993    */
  4. /*                                      */
  5. /*  Starten von AddressMaster via BT-II */
  6. /*                                      */
  7. /*  Einlesen von Adressen via ADM.      */
  8. /*                                      */
  9. /*  Ein ARexx-Programm von              */
  10. /*  Peter Humm, CH-9203 Niederwil       */
  11. /*                                      */
  12. /*  In Anlehnung an ein Script von      */
  13. /*  Carsten Fulde.                      */
  14. /*                                      */
  15. /****************************************/
  16.  
  17. /*  $VER: ADR-LOAD.bt2 (28.7.93)
  18.  
  19.  In BeckerText-II an gewünschter Stelle VORNAME NAME eintippen und
  20.  Cursor auf dieser Zeile stehenlassen. Dieses Script erwartet den
  21.  Eintrag auf der Zeile 9 !
  22.  
  23.  Es reicht auch bloss ein Eintrag. Er wird als NAME interpretiert.
  24.  So werden auch Adressen gefunden, bei denen kein Vorname eingege-
  25.  ben wurde, z.B. Firmen.
  26.  
  27.  Nun ADR-Laden.bt2 aufrufen. *ADM* wird gestartet, sofern er nicht
  28.  schon läuft. Nach der Adressen-Suche wird er wieder ausgeschaltet,
  29.  damit das Fenster auf der WB verschwindet. Vielleicht baut uns ja
  30.  Jan noch den Befehl SLEEP in den ARexxPort ein (entspr. TAB).
  31.  
  32.  Das Arexx-Script akzeptiert WildCards wie Geiss* oder auch bloss
  33.  Teile des Vor- und Zunamens. 'J Geiss' wird wie auch 'Jan issle'
  34.  von *ADM* richtig als Jan Geissler interpretiert.
  35.  
  36.  Dreiteilige Namen wie Jan M. Mustermann werden ebenfalls erkannt.
  37.  So führt 'J M Must' zum selben Ergebnis, es sei denn, es befinde
  38.  sich vorher noch ein Jürg M. Muster in der Datei ;-))
  39.  
  40.  Es ist möglich, zwei Adressen unter gleichen Namen abzuspeichern.
  41.  Wenn also Name und Vorname von zwei Einträgen identisch sind, zeigt
  42.  BT-II die erste Adresse an und fragt, ob die erste oder die zweite
  43.  eingetragen werden soll. Wird 'Nächste' gewählt, löscht BT-II den
  44.  ersten Eintrag und ersetzt ihn durch den zweiten (eigentlich logisch).*/
  45.  
  46.  
  47. /*  DAS SCRIPT   */
  48.  
  49.  
  50. /*  Nachsehen, ob AddressMaster schon   */
  51. /*  läuft. Wenn nicht, dann starten     */
  52.  
  53. if ~show("P",ADM.1) = 1 then do
  54.  
  55.     /*  Einschalten des CLI                 */
  56.  
  57.     address command
  58.  
  59.     /*  Starten von ADM wie von WB, also    */
  60.     /*  mit den ToolTypes.                  */
  61.     /*  Das Programm WBRun sollte beiliegen */
  62.     /*  sonst findet Ihr es auf Fish_843.   */
  63.     /*  Kopiert es in's C:                  */
  64.  
  65.     'wbrun dh0:Office/ADM/AddressMaster'
  66.  
  67.     /*  Auf langsameren Amigas muss hier    */
  68.     /*  eine Wartezeit eingegeben werden,   */
  69.     /*  damit *ADM* auch tatsächlich bereit */
  70.     /*  ist, wenn die Suche startet.        */
  71.  
  72.     address command 'wait 5'
  73.  
  74. end
  75.  
  76. /*  Scharfstellen von BT-II             */
  77.  
  78. address 'bt2'
  79. options results
  80.  
  81. /*  Aktuelle Zeile einlesen.            */
  82. /*  Geht m.W. erst ab BT-II V_1.13      */
  83.  
  84. 'WYSIWYG' 0
  85. 'GET' 'line'
  86.  
  87. /*  Zeile zerlegen in Vorname und Name  */
  88. /*  Feststellen der Anzahl Worte. Es    */
  89. /*  wird nur das erste und letzte Wort  */
  90. /*  ausgewertet.                        */
  91.  
  92. line = result
  93. zahl = words(line)
  94. eins = subword(line,1,1)
  95. zwei = subword(line,zahl)
  96.  
  97. /*  allf. Carriage-Returns abschneiden  */
  98.  
  99. ret  = D2C(13)
  100. eins = compress(eins,ret)
  101. zwei = compress(zwei,ret)
  102.  
  103. /*  Falls kein Vorname eingegeben wird, */
  104. /*  muss dieser Suchbegriff gelöscht    */
  105. /*  werden.                             */
  106.  
  107. if zwei = eins then eins = ""
  108.  
  109. /*  WildCards anfügen.                  */
  110. /*  Erleichtert die Suche z.B. bei      */
  111. /*  Doppelnamen                         */
  112.  
  113. eins = "*"eins"*"
  114. zwei = "*"zwei"*"
  115.  
  116. /*  Datensatz nach dem Namen suchen.    */
  117. /*  Hier der erste.                     */
  118.  
  119. fst = 1
  120. res = 0
  121.  
  122. /*  Suchparameter übergeben             */
  123.  
  124. ADM.FIRSTNAME = eins
  125. ADM.LASTNAME = zwei
  126.  
  127. /*  Endlos-Schleife / Such-Routine      */
  128.  
  129. do forever
  130.  
  131.   /*  Jetzt ADM.1 aktivieren              */
  132.  
  133.   address 'ADM.1'
  134.  
  135.   /*  Suche ab 1. Adresse und Ablage in   */
  136.   /*  der STEM.Variable RESAD             */
  137.  
  138.   SEARCH fst ADM
  139.   res = RESULT
  140.  
  141.   /*  Abfrage Fehlermeldung. Wenn o.k.    */
  142.   /*  dann Eintrag der Adresse in BT-II   */
  143.   /*  Andernfalls Abbruch der Suche.      */
  144.  
  145.   if res >-1 then
  146.     do
  147.  
  148.     /*  Erste passende Adresse einlesen.    */
  149.  
  150.     GETADDRESS RESAD
  151.  
  152.     /*  Nächsten Eintrag aktivieren und als */
  153.     /*  Stamm-Variable RESAD1 einlesen      */
  154.  
  155.     ACTIVATENEXT
  156.  
  157.     GETADDRESS RESAD1
  158.  
  159.     /*  Falls Name UND Vorname identisch    */
  160.     /*  sind, erste gefundene Adresse ins   */
  161.     /*  Dokument übertragen.                */
  162.  
  163.     if (RESAD.FIRSTNAME = RESAD1.FIRSTNAME) + (RESAD.LASTNAME = RESAD1.LASTNAME) = 2 then do
  164.  
  165.       address 'bt2'
  166.  
  167.       call Einsetzen
  168.  
  169.       /*  Abfrage, ob die erste oder zweite   */
  170.       /*  Adresse gewünscht wird.             */
  171.  
  172.       GET 'string Diese Nächste Hier_gibt_es_noch_eine_weitere_Adresse._ _____Welche_soll_ich_einsetzen ??_'
  173.  
  174.       /*  Wird die zweite gewählt, muss die   */
  175.       /*  bereits eingetragene erst gelöscht  */
  176.       /*  werden. Sonst Script abbrechen.     */
  177.  
  178.       if result = 'Nächste' then do
  179.  
  180.         GOTO 9
  181.  
  182.         /*  Adressen-Block markieren und dann   */
  183.         /*  ausschneiden.                       */
  184.  
  185.         '6MARK' down
  186.         'BCUT'
  187.  
  188.         /*  Die nächste Adresse wird aus *ADM   */
  189.         /*  geholt und wie gewohnt eingetragen. */
  190.  
  191.         address 'ADM.1'
  192.  
  193.         GETADDRESS RESAD
  194.  
  195.         address 'bt2'
  196.  
  197.         call Einsetzen
  198.  
  199.         call Fertig
  200.  
  201.       end
  202.       else call Fertig
  203.  
  204.       /*  Abbruch, wenn die erste Adresse     */
  205.       /*  bestätigt wird.                     */
  206.  
  207.     end
  208.     else do
  209.  
  210.       /*  Wenn Adresse nur einmal vorhanden,  */
  211.       /*  eintragen und Skript beenden.       */
  212.  
  213.       call Einsetzen
  214.  
  215.       call Fertig
  216.  
  217.     end
  218.  
  219.   end
  220.   else do
  221.  
  222.     /*  Meldung, dass Adresse nicht ge-     */
  223.     /*  funden und Abbruch der Suche.       */
  224.  
  225.     address 'bt2'
  226.  
  227.     GET 'string OK OK >->->->__Adresse_nicht_gefunden_<-<-<-< __________Na dann eben nicht_!!'
  228.  
  229.     call Fertig
  230.  
  231.   end
  232.  
  233. end
  234.  
  235.  
  236. /*  Ausschalten von *ADM* und Rückkehr  */
  237. /*  zu BeckerText-II.                   */
  238.  
  239. Fertig:
  240.  
  241.   Address 'ADM.1'
  242.  
  243.   QUIT
  244.  
  245. exit
  246.  
  247. return
  248.  
  249.  
  250. /*  Diese Routine plaziert die Zeilen   */
  251. /*  der Adresse richtig im Dokument.    */
  252.  
  253. Einsetzen:
  254.  
  255. address 'bt2'
  256.  
  257. /*  Aktuelle Zeile markieren und dann   */
  258. /*  ausschneiden.                       */
  259.  
  260. 'MARK' 'line'
  261. 'BCUT'
  262.  
  263. /*  Adresse in Dokument eintragen       */
  264.  
  265. INSERT RESAD.SALUTATION
  266. INSERT "\r"
  267. if RESAD.FIRSTNAME ~= '' then do
  268.     INSERT RESAD.FIRSTNAME
  269.     INSERT "320820"x
  270. end
  271. INSERT RESAD.LASTNAME
  272. INSERT "\r"
  273. if RESAD.ADDRESS1 ~= '' then do
  274.     INSERT RESAD.ADDRESS1
  275.     INSERT "\r"
  276. end
  277. if RESAD.ADDRESS2 ~= '' then do
  278.     INSERT RESAD.ADDRESS2
  279.     INSERT "\r"
  280. end
  281. INSERT RESAD.POSTCODE
  282. INSERT "320820"x
  283. INSERT RESAD.CITY
  284. INSERT "\r"
  285. INSERT RESAD.COUNTRY
  286. INSERT "\r"
  287.  
  288. /*  Dokument unter der Adresse säubern  */
  289. /*  und geeignete Zeichen- und Absatz-  */
  290. /*  formate wählen.                     */
  291. /*  Der Cursor befindet sich danach auf */
  292. /*  Zeile 19, wo sich bei mir jeweils   */
  293. /*  die Betreff-Zeile befindet.         */
  294.  
  295. INSERT "\r\r\r\r\r\r\r\r"
  296. 'GOTO' 19
  297. '10MARK' down
  298. 'BCUT'
  299. 'FOS' 'z STANDARD1'
  300. 'FOS' 'a STANDARD1'
  301. 'BOTTOM'
  302.  
  303. return
  304.  
  305.